﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Automation.Peers;
using System.Windows.Automation.Provider;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Calendar;

namespace AppCommerciaux.Views
{
    /// <summary>
    /// Logique d'interaction pour GestionnaireDeRendezVousView.xaml
    /// </summary>
    public partial class GestionnaireDeRendezVousView : Window
    {
        private Entity.agenda EntityAgenda = null;
        private Boolean AjoutModif;//true => ajout, false => modif
        private Int64 myAgendaIdentifiant;
        private AppCommerciaux.Views.ConsulterRendezVousView myPageOwner;
        //Sans modif
        public GestionnaireDeRendezVousView()
        {
            InitializeComponent();

        }
        // Vue Ajouter
        public GestionnaireDeRendezVousView(DateTime dateDeb, DateTime dateFin, string title, AppCommerciaux.Views.ConsulterRendezVousView myPage)
        {
            try
            {
                InitializeComponent();
                //Association des dates selectionner dans calendar
                TextBoxDateDeb.Text = dateDeb.ToString();
                TextBoxDateFin.Text = dateFin.ToString();
                RichTextBoxCommentaire.Document.Blocks.Clear();
                RichTextBoxCommentaire.Document.Blocks.Add(new Paragraph(new Run(title)));

                //TODO Initialisation des contacts dans la liste des contacts
                using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                {
                    List<Entity.tiers_contact> var = new List<Entity.tiers_contact>();
                    var = dc.tiers_contact.ToList();

                    foreach (var item in var)
                    {
                        ComboBoxContacts.Items.Add(item.nom);
                    }

                }
                AjoutModif = true;
                myPageOwner = myPage;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Vue Modifier
        public GestionnaireDeRendezVousView(Entity.agenda myAgendaModifier, AppCommerciaux.Views.ConsulterRendezVousView myPage)
        {
            try
            {
                InitializeComponent();
                AjoutModif = false;
                EntityAgenda = myAgendaModifier;
                //TODO Initialisation des contacts dans la liste des contacts
                using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                {
                    List<Entity.tiers_contact> var = new List<Entity.tiers_contact>();
                    var = dc.tiers_contact.ToList();

                    foreach (var item in var)
                    {
                        ComboBoxContacts.Items.Add(item.nom);
                    }
                }

                //TODO Chargement de la Fenetre avec les données
                using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                {
                    // Ma requête de selection des données
                    //Entity.agenda var = dc.agenda.Where(a => a.id == identifiant_Agenda).FirstOrDefault();
                  
                    //TODO chargement du nom du contact dans la combobox
                    Entity.tiers_contact myContact = new Entity.tiers_contact();
                    myContact = dc.tiers_contact.Where(t => t.id == EntityAgenda.id_tiers_contact).First();
                   
                    // Association des données dans ma vue
                    ComboBoxContacts.SelectedValue = myContact.nom;
                    TextBoxDateDeb.Text = EntityAgenda.date_debut.ToString();
                    TextBoxDateFin.Text = EntityAgenda.date_fin.ToString();
                    RichTextBoxCommentaire.Document.Blocks.Clear();
                    RichTextBoxCommentaire.Document.Blocks.Add(new Paragraph(new Run(EntityAgenda.infos_supp.ToString())));

                }
                ButtonAjouter.Content = "Modifier le rendez-vous";
                
                //myAgendaIdentifiant = EntityAgenda.id;
                myPageOwner = myPage;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void ButtonFermer_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void ButtonAjouter_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                
                string richText = new TextRange(RichTextBoxCommentaire.Document.ContentStart, RichTextBoxCommentaire.Document.ContentEnd).Text;
                string myDateDeb = TextBoxDateDeb.Text;
                string myDateFin = TextBoxDateFin.Text;
                long identifiantContact = 0;
                string valeurComboBox = ComboBoxContacts.SelectedItem.ToString();

                // Verifie si l'utilisateur a selectionner un contact
                if (ComboBoxContacts.SelectedItem.ToString() != "") 
                {
                    // Recupere l'id de ce contact
                    using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                    {
                        //List<Entity.tiers_contact> var = new List<Entity.tiers_contact>();
                         Entity.tiers_contact var = dc.tiers_contact.Where(t => t.nom == valeurComboBox).FirstOrDefault();
                         identifiantContact = var.id;
                    }

                    //Verifie que l'id n'est pas null
                    if (identifiantContact != 0)
                    {
                        if (AjoutModif == false)
                        {
                            using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                            {
                               // Entity.agenda AgendaInsert = new Entity.agenda();
                                //AgendaInsert = dc.agenda.Where(s => s.id == myAgendaIdentifiant).FirstOrDefault();

                                EntityAgenda.id_tiers_contact = identifiantContact;
                                EntityAgenda.date_debut = myDateDeb;
                                EntityAgenda.date_fin = myDateFin;
                                EntityAgenda.infos_supp = richText;
                                
                                
                                dc.SaveChanges();
                                
                            }

                        }
                        else 
                        {
                            //TODO ajouter la ligne dans la base de données
                            using (Entity.liv3Entities1 dc = new Entity.liv3Entities1())
                            {
                                Entity.agenda AgendaInsert = new Entity.agenda();

                                AgendaInsert.id_tiers_contact = identifiantContact;
                                AgendaInsert.date_debut = myDateDeb;
                                AgendaInsert.date_fin = myDateFin;
                                AgendaInsert.infos_supp = richText;

                                dc.agenda.Add(AgendaInsert);
                                dc.SaveChanges();

                            }
                        }
                        MessageBox.Show("Insertion/Modification réussie", "Succés", MessageBoxButton.OK, MessageBoxImage.Information);

                        myPageOwner.ButtonRafraichirCalendar.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));

                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("Echec Insertion/Modification", "Echec", MessageBoxButton.OK, MessageBoxImage.Error);
                        this.Close();
                    }
                }
                else
                {
                    MessageBox.Show("Echec Insertion/Modification", "Echec", MessageBoxButton.OK, MessageBoxImage.Error);
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                this.Close();
            }
        }

      
    }
}
